package projeto.desenvolvimento;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ManipulaArquivo {
		
	private String arqUser;
	private String arqEst;
	private List<String[]> linhasUser, linhasEst;
	private ManipulaUsuario listaUsuario;
	private ManipulaEstabelecimento listaEstabelecimento;
	
	public ManipulaArquivo(String arqUser, String arqEst){
		this.arqUser = arqUser;
		this.arqEst = arqEst;
		listaUsuario = new ManipulaUsuario();
		listaEstabelecimento = new ManipulaEstabelecimento();
		linhasUser = lerArquivo(arqUser);
		criaUsuario(linhasUser,listaUsuario);
		linhasEst = lerArquivo(arqEst);		
		criaEstabelecimentos(linhasEst,listaEstabelecimento);
	}
		
	public static List<String[]> lerArquivo(String caminhoArquivo){
		BufferedReader in;
		List<String[]> listaLinhas = new ArrayList<String[]>();
		String[] linha;		
		try {
			in = new BufferedReader(new FileReader(caminhoArquivo));
			
			while(in.ready()){
				linha = in.readLine().split(";");
				listaLinhas.add(linha);
			}			
			in.close();			
		} catch (IOException e) {			
			System.out.println(e.getMessage());
		}return listaLinhas;
		
	}	
	
	public void criaEstabelecimentos(List<String[]> conjunto,ManipulaEstabelecimento listaEstabelecimentos){
		Estabelecimento local = null;
		
		for(String[] elementos : conjunto){
			local = new Estabelecimento(elementos[0],elementos[1],elementos[2]);
			listaEstabelecimentos.adiconaEstabelecimento(local);
		}		
	}
	
	public void criaUsuario(List<String[]> conjunto, ManipulaUsuario listaUsuario){
		Usuario user = null;		 
		for(String[] elementos : conjunto){
			user = new Usuario(elementos[1]);
			for(int i = 2; i < elementos.length;i++){				
				user.adicionaNotas(elementos[i]);				
			}			
			listaUsuario.adicionaUsuario(user);			
		}
				
	}
	
	public ManipulaUsuario getListaUsuarios(){
		return listaUsuario;
	}
	
	public ManipulaEstabelecimento getListaEstabelecimentos(){
		return listaEstabelecimento;
	}
	
	

}
